package com.todo.content.infrastructure.repository;


import com.todo.common.common.entity.response.page.PageResult;
import com.todo.content.infrastructure.entity.condition.ContentTopicCondition;
import com.todo.content.infrastructure.entity.po.ContentTopicPO;

import java.util.List;

/**
 * (ContentTopic)表服务接口
 *
 * @author zhangwenxiang
 * @since 2024-03-04 21:10:04
 */
public interface ContentTopicRepository {

    /**
     * 多条件查询话题列表
     *
     * @param contentTopicCondition
     * @return
     */
    PageResult<ContentTopicPO> queryContentTopicByCondition(ContentTopicCondition contentTopicCondition);

    /**
     * 多条件查询话题列表数量
     *
     * @param contentTopicCondition
     * @return
     */
    Long queryCountByCondition(ContentTopicCondition contentTopicCondition);

    /**
     * 新增内容话题信息
     *
     * @param contentTopicPO
     * @return
     */
    Boolean insertContentTopic(ContentTopicPO contentTopicPO);

    /**
     * 更新内容话题信息
     *
     * @param contentTopicPO
     * @return
     */
    Boolean updateContentTopicById(ContentTopicPO contentTopicPO);

    /**
     * 根据主键id删除话题信息
     *
     * @param id
     * @return
     */
    Boolean removeContentTopicById(Long id);

    /**
     * 根据主键id查询话题详情
     *
     * @param id
     * @return
     */
    ContentTopicPO queryContentTopicPOById(Long id);

    /**
     * 更新话题内容数量
     *
     * @param contentTopicPO
     * @return
     */
    Boolean updateContentTopicCount(ContentTopicPO contentTopicPO);

    /**
     * 根据话题名称查询话题信息
     *
     * @param name
     * @return
     */
    ContentTopicPO queryContentTopicByName(String name);

    /**
     * 根据话题名称搜索话题信息列表
     *
     * @param keyword
     * @return
     */
    List<ContentTopicPO> searchContentTopicByName(String keyword);

    /**
     * 根据话题id列表查询话题信息列表
     *
     * @param topicIdList
     * @return
     */
    List<ContentTopicPO> queryContentTopicByIdList(List<Long> topicIdList);

    /**
     * 根据话题id启用禁用话题
     *
     * @param topicId
     * @param enable
     * @return
     */
    Boolean enableContentTopicById(Long topicId, Integer enable);
}
